home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 22 / Cream of the Crop 22.iso / os2 / ext2_200.zip / EXT2_SRC.ZIP / 32BITS / EXT2-OS2 / EXT2FLT / E2DATA.H < prev    next >
C/C++ Source or Header  |  1996-01-24  |  7KB  |  140 lines

  1. /************************************************************************/
  2. /*                       Linux partition filter.                        */
  3. /*          (C) Copyright Deon van der Westhuysen, July 1995.           */
  4. /*                                                                      */
  5. /*  Dedicated to Jesus Christ, my Lord and Saviour.                     */
  6. /*                                                                      */
  7. /* This program is free software; you can redistribute it and/or modify */
  8. /* it under the terms of the GNU General Public License as published by */
  9. /* the Free Software Foundation; either version 2, or (at your option)  */
  10. /* any later version.                                                   */
  11. /*                                                                      */
  12. /* This program is distributed in the hope that it will be useful,      */
  13. /* but WITHOUT ANY WARRANTY; without even the implied warranty of       */
  14. /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        */
  15. /* GNU General Public License for more details.                         */
  16. /*                                                                      */
  17. /* You should have received a copy of the GNU General Public License    */
  18. /* along with this program; if not, write to the Free Software          */
  19. /* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.            */
  20. /*                                                                      */
  21. /*  This code is still under development; expect some rough edges.      */
  22. /*                                                                      */
  23. /************************************************************************/
  24.  
  25. #ifndef _E2DATA_H_
  26. #define _E2DATA_H_
  27.  
  28. #include "os2head.h"
  29.  
  30. #define FILTER_ADD_NAME        "LinuxPartitions"    /* Max 15 chars. */
  31. #define MAX_LINUX_PARTITIONS    16    /* Max number of virtual partitions */
  32.  
  33. #define    PARTITION_LINUX        0x83    /* Type of partition to convert */
  34. #define PARTITION_DOSSMALL    0x01    /* Dos partition <16MB */
  35. #define PARTITION_DOSMED    0x04    /* Dos partition >16MB <32MB */
  36. #define PARTITION_DOSLARGE    0x06    /* Dos partition >32MB */
  37. #define PARTITION_IFS        0x07    /* Type of virtual partitions */
  38. #define PARTITION_EXTENDED    0x05    /* Type for extended partition */
  39. #define PARTITION_HIDDEN    0x10    /* Hidden primary partition */
  40.  
  41. #define LINUX_VIRTUAL_SECS    1    /* Override boot sector */
  42.  
  43. #define MAX_DEVTABLE_SIZE    1024    /* Maximum size of device table */
  44. #define SECTOR_SIZE        512    /* Number of bytes in a sector */
  45.  
  46. #define    F_SERVER_ACTIVE        1    /* Flag: IORB queue being served */
  47. #define F_REQUEST_BUSY        2    /* Flag: Wait for request to finish */
  48.                     /* (Unit record is being used) */
  49. typedef struct
  50. {
  51.  PIORB    pHead;                /* Head of queue of IORBs */
  52.  PIORB    pTail;                 /* Tail of queue of IORBs */
  53.  int    Flags;                /* Flags for this queue */
  54. } TIORBQueue;                /* Structure to queue IORBs */
  55. typedef TIORBQueue *NPIORBQueue;
  56.  
  57. #define    F_ALLOCATED        1    /* Flag: unit is allocated */
  58. #define F_ALLOW_WRITE        2    /* Flag: unit is writeable */
  59.  
  60. typedef struct
  61. {
  62.  int        Flags;            /* Flags for unit (Alloc, Write) */
  63.  TIORBQueue    IORBQueue;        /* Queue to store waiting IORBs */
  64. } TRecHeader;                /* Header common to all unit records */
  65. typedef TRecHeader    *NPRecHeader;    /* Pointer type for record */
  66.  
  67.  
  68. /* The 'base unit' is the source of the data used to construct the virtual */
  69. /* units from. One virtual unit is constructed for each virtual partition. */
  70. typedef struct
  71. {
  72.  TRecHeader    Hdr;            /* Header for the unit record */
  73.  USHORT        UnitHandle;        /* Original UnitHandle for unit */
  74.  PADDEntryPoint    pADDEntry;        /* Original ADD entry point */
  75.  ADAPTERINFO    AdapterInfo;        /* Adapter information for unit */
  76.                     /* Also contains modified UnitInfo. */
  77.  USHORT        GeoNumHeads;        /* Number of heads for this unit */
  78.  USHORT        GeoTrackSec;        /* Number of sectors per track */
  79.  /* Fields that is saved to later restore the current IORB... */
  80.  USHORT        SaveReqCtrl;        /* Saved request control */
  81.  USHORT        SaveReserved;        /* Saved DM reserved field */
  82.  PNotifyAddr    SaveNotify;        /* Saved Notification address */
  83. } TBaseUnitRec;                /* Unit record for base units */
  84. typedef TBaseUnitRec    *NPBaseUnitRec;    /* Pointe type for record */
  85.  
  86. typedef struct
  87. {
  88.  TRecHeader    Hdr;            /* Header for the unit record */
  89.  NPBaseUnitRec    pSourceUnitRec;        /* Pointer to base unit record */
  90.                     /* This is also the UnitHandle */
  91.  PUNITINFO    pUnitInfo;        /* Pointer to modified UnitInfo */
  92.  USHORT        UnitInfoLen;        /* Length of the unit information */
  93.  UCHAR        PartSysIndicator;    /* System indicator in part table */
  94.  UCHAR        FSType;            /* What type of FS for this unit */
  95.  ULONG        StartRBA;        /* Start RBA of partiton source */
  96.  ULONG        NumSectors;        /* Number of sectors in partition */
  97.  ULONG        NumVirtualSectors;    /* Number of sectors to virtualize */
  98.  ULONG        NumExtraSectors;    /* Number of sectors we add to part */
  99.  /* Fields that is saved to later restore the current IORB... */
  100.  USHORT        SaveReqCtrl;        /* Saved request control */
  101.  USHORT        SaveReserved;        /* Saved DM reserved field */
  102.  PNotifyAddr    SaveNotify;        /* Saved Notification address */
  103.  USHORT        SavecSGList;        /* Saved cSGList field */
  104.  SCATGATENTRY    SaveSGEntry;        /* Saved copy of modified SG entry */
  105.  PSCATGATENTRY    SavepSGList;        /* Saved pSGList field */
  106.  ULONG        SaveppSGList;        /* Saved ppSGList field */
  107.  ULONG        SaveRBA;        /* Saved RBA field */
  108.  USHORT        SaveBlockCount;        /* Saved BlockCount field */
  109.  /* Fields to save informtion about virtual sectors allready transferred */
  110.  USHORT        SectorsDone;        /* Number virtual sectors transfered */
  111.  ULONG        SGOffset;        /* Offset to add to SG list */
  112.  /* Field to restore the hidden sector field in a FAT bootsector. */
  113.  ULONG        HiddenSectors;        /* Original number of hidden sectors */
  114. } TVirtUnitRec;                /* Unit record for virtual units */
  115. typedef TVirtUnitRec    *NPVirtUnitRec;    /* Pointe type for record */
  116.  
  117. #define FI_QUIET    1
  118. #define FI_VERBOSE    2
  119. #define FI_ALLPART    4
  120. #define FI_ALLOWWRITE    8
  121.  
  122. #define FS_UNKNOWN    0        /* FS type not determined */
  123. #define FS_DOSFAT    1        /* FS is FAT */
  124. #define FS_EXT2        2        /* FS is ext2 linux filesystem */
  125.  
  126. /* External references to data in e2data.h. */
  127.  
  128. extern int        InstallFlags;
  129. extern PFN        DevHelp;
  130. extern USHORT        ADDHandle;
  131. extern void far *    pDataSeg;
  132. extern ULONG        ppDataSeg;
  133. extern TBaseUnitRec    BaseUnits[MAX_LINUX_PARTITIONS];
  134. extern int        NumBaseUnits;
  135. extern TVirtUnitRec    VirtUnits[MAX_LINUX_PARTITIONS];
  136. extern int        NumVirtUnits;
  137. extern USHORT        MountTable[MAX_LINUX_PARTITIONS];
  138. extern int        MountCount;
  139. #endif
  140.